package com.freeman.cement.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.freeman.cement.myenum.ProcessingFlow;
import com.freeman.cement.util.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("bjdb")
public class MyEvent {
    /**
     * 数据库主键id
     */
    //mybatis-plus使用自增长id
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 海康平台生成的事件id
     */
    @TableField("eventId")
    private String eventId;
    /**
     * 事件类型码
     */
    @TableField("eventType")
    private String eventType;
    @TableField("eventName")
    private String eventName;
    /**
     * 报警事件等级 1：高；2：中；3：低
     */
    @TableField("eventLvl")
    private Integer eventLvl;
    @TableField("eventLvlName")
    private String eventLvlName;
    /**
     * 发生时间
     */
    @TableField("happenTime")
    private String happenTime;
    /**
     * 报警事件类型 0：未确认；1：有效报警；2：误报警
     */
    @TableField("catlog")
    private Integer catlog;
    /**
     * 对于报警事件的描述
     */
    @TableField("describe")
    private String describe;
    /**
     * 时间结论
     */
    @TableField("conclusion")
    private String conclusion;
    /**
     * 事件结果
     */
    @TableField("result")
    private Integer result;
    /**
     * 事件处理结束时间
     */
    @TableField("endTime")
    private Date endTime;
    @TableField("cameraIndexCode")
    private String cameraIndexCode;
    @TableField("cameraName")
    private String cameraName;
    /**
     * 从海康平台获取报警图片所需要的两个标识
     */
    @TableField("imageUrl")
    private String imageUrl;
    /**
     * 本地发布的报警图片地址
     * 用户每次请求getEventPic接口时，每次都会下载图片到服务器本地文件夹地址，同时更新该地址
     * 用户没请求上述接口，则该字符串为空
     */
    @TableField("picUrl")
    private String picUrl;
    /**
     * 事件状态 1：未处理；2：已接警；3：通知处理人； 4：处理中； 5：待验收；6：处理完成；7：已关闭；8：处理异常
     */
    @TableField("status")
    private Integer status;
    @TableField(exist = false)
    private String statusName;
    /**
     * 海康平台发来的事件原始报文
     */
    @TableField("origin")
    private String origin;
    /**
     * 工段
     */
    @TableField("deptId")
    private Integer deptId;
    @TableField("deptName")
    private String deptName;
    /**
     * 专业
     */
    @TableField("worksectionId")
    private Integer worksectionId;
    @TableField("worksection")
    private String worksection;
    @TableField("worksectionIconUrl")
    private String worksectionIconUrl;
    /**
     * 值班室
     */
    @TableField("dutyRoomId")
    private Integer dutyRoomId;
    @TableField("dutyRoomName")
    private String dutyRoomName;
    /**
     * 接警人id
     */
    @TableField("eventReceiver")
    private Integer eventReceiver;
    /**
     * 接警人真名
     */
    @TableField("eventReceiverName")
    private String eventReceiverName;
    /**
     * 处理人id集合
     */
    @TableField("eventHandlers")
    private String eventHandlers;

    @TableField("overheadInfo")
    private String overheadInfo;

    public String getStatusName() {
        if (status != null) {
            for (ProcessingFlow e : ProcessingFlow.values()) {
                if (e.getIndex() == status) {
                    return statusName = e.getName();
                }
            }
        }
        return null;
    }


    //此字段用于获取报警事件图片，因为图片可能会过期，所以需要使用这种方法获取图片
    @TableField(exist = false)
    private String svrIndexCode;

    @TableField(exist = false)
    private String picUri;

    public void setImageUrl(String url){
        imageUrl = url;
        if (StringUtils.isNotBlank(imageUrl)) {
            try {
                JSONObject jsonObject = JSONObject.parseObject(imageUrl);
                if(jsonObject != null) {
                    if (jsonObject.containsKey("picUri")) {
                        picUri = jsonObject.getString("picUri");
                    }
                    if (jsonObject.containsKey("svrIndexCode")) {
                        svrIndexCode = jsonObject.getString("svrIndexCode");
                    }
                }
            } catch (Exception e) {
            }
        }

    }

    /*public String getSvrIndexCode() {
        if (StringUtils.isNotBlank(imageUrl)) {
            try {
                JSONObject jsonObject = JSONObject.parseObject(imageUrl);
                if (jsonObject != null && jsonObject.containsKey("svrIndexCode")) {
                    return jsonObject.getString("svrIndexCode");
                }
            } catch (Exception e) {
                return null;
            }
            return null;
        } else {
            return null;
        }
    }*/

    /*public String getPicUri() {
        if (StringUtils.isNotBlank(imageUrl)) {
            try {
                JSONObject jsonObject = JSONObject.parseObject(imageUrl);
                if (jsonObject != null && jsonObject.containsKey("picUri")) {
                    return jsonObject.getString("picUri");
                }
            } catch (Exception e) {
                return null;
            }
            return null;
        } else {
            return null;
        }
    }*/

}
